Add LAT_DDMMDIR/LON_DDMMDIR and make cup use it.
authorrobertl <robertl>
Fri, 20 Jun 2008 03:53:36 +0000 (03:53 +0000)
committerrobertl <robertl>
Fri, 20 Jun 2008 03:53:36 +0000 (03:53 +0000)
csv_util.c
internal_styles.c
style/cup.style
xcsv_tokens.gperf
xcsv_tokens.in
xmldoc/chapters/styles.xml

index 31886f4b4d86bb84428ab0a800b6a5575f18d92d..680946b3b9a8359f1eda347e67758d88e60e243a 100644 (file)
@@ -93,6 +93,7 @@ typedef enum {
        XT_LAT_DIRDECIMAL,
        XT_LAT_HUMAN_READABLE,
        XT_LAT_INT32DEG,
+       XT_LAT_DDMMDIR,
        XT_LAT_NMEA,
        XT_LOCAL_TIME,
        XT_LON_DECIMAL,
@@ -101,6 +102,7 @@ typedef enum {
        XT_LON_DIRDECIMAL,
        XT_LON_HUMAN_READABLE,
        XT_LON_INT32DEG,
+       XT_LON_DDMMDIR,
        XT_LON_NMEA,
        XT_MAP_EN_BNG,
        XT_NOTES,
@@ -140,7 +142,7 @@ extern geocache_container gs_mkcont(const char *t);
 static double pathdist = 0;
 static double oldlon = 999;
 static double oldlat = 999;
-    
+
 static int waypt_out_count;
 static route_head *csv_track, *csv_route;
 
@@ -438,6 +440,24 @@ decdir_to_dec(const char * decdir)
     
     return(rval * sign);
 }
+
+/*****************************************************************************/
+/* ddmmdir_to_degrees() - convert ddmm/direction value into degrees          */
+/* usage: lat = ddmmdir_to_degrees("W90.1234");                              */
+/*        lat = ddmmdir_to_degrees("30.1234N");                              */
+/*****************************************************************************/
+static double
+ddmmdir_to_degrees(const char * ddmmdir)
+{
+      // if not N or E, prepend a '-' to ddmm2degrees input
+      // see XT_LAT_NMEA which handles ddmm directly
+      if (strchr(ddmmdir, 'W') || strchr(ddmmdir, 'S'))
+      {
+         return ddmm2degrees(- atof(ddmmdir));
+      }
+      return ddmm2degrees(atof(ddmmdir));
+
+}
 #endif
 
 /*****************************************************************************
@@ -958,6 +978,9 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp)
     case XT_LAT_HUMAN_READABLE:
        human_to_dec( s, &wpt->latitude, &wpt->longitude, 1 );
        break;
+    case XT_LAT_DDMMDIR:
+         wpt->latitude = ddmmdir_to_degrees(s);
+      break;
     case XT_LAT_NMEA:
        wpt->latitude = ddmm2degrees(atof(s));
        break;
@@ -979,6 +1002,9 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp)
     case XT_LON_HUMAN_READABLE:
        human_to_dec( s, &wpt->latitude, &wpt->longitude, 2 );
        break;
+    case XT_LON_DDMMDIR:
+         wpt->longitude = ddmmdir_to_degrees(s);
+      break;
     case XT_LON_NMEA:
        wpt->longitude = ddmm2degrees(atof(s));
        break;
index b370c6e9046d8599bebe2cbd48aca533a43e56b7..c48607a33619e8bd1d46970d00048e3eee529804 100644 (file)
@@ -101,8 +101,8 @@ static char cup[] =
 "IFIELD SHORTNAME,\"\", \"\"%s\"\"\n"
 "IFIELD SHORTNAME,\"\", \"%s\"\n"
 "IFIELD CONSTANT,\"\", \"\"\n"
-"IFIELD LAT_NMEA, \"%f\", \"%08.3f\", \"absolute\"\n"
-"IFIELD LON_NMEA, \"%f\", \"%09.3f\", \"absolute\"\n"
+"IFIELD LAT_DDMMDIR, \"%f\", \"%08.3f\", \"absolute\"\n"
+"IFIELD LON_DDMMDIR, \"%f\", \"%09.3f\", \"absolute\"\n"
 "IFIELD ALT_METERS,\"\", \"%dm\"\n"
 "IFIELD CONSTANT,\"\", \"1\"\n"
 "IFIELD CONSTANT,\"\", \"\"\n"
@@ -477,6 +477,43 @@ static char gpsman[] =
 "IFIELD        IGNORE, \"\", \"%s\"\n"
 
 "# gpsman.c likes mkshort len = 8, whitespace = 0.\n"
+;
+static char iblue747[] = 
+"# GPSBabel XCSV Style File http://www.gpsbabel.org/htmldoc-1.3.2/Styles.html\n"
+"# Author: Christian Barmala http://www.barmala.de/\n"
+"# License GNU Public License http://opensource.org/licenses/gpl-license.php\n"
+
+"DESCRIPTION  Data Logger iBlue747 csv\n"
+"EXTENSION csv\n"
+
+
+"# FILE LAYOUT DEFINITIIONS:\n"
+
+"FIELD_DELIMITER COMMA\n"
+"RECORD_DELIMITER NEWLINE\n"
+"# BADCHARS COMMA\n"
+"# SHORTLEN 16\n"
+"# SHORTWHITE 0\n"
+"# ENCODING UTF-8\n"
+"DATATYPE TRACK\n"
+"PROLOGUE INDEX,RCR,DATE,TIME,VALID,LATITUDE,N/S,LONGITUDE,E/W,HEIGHT,SPEED,DISTANCE,\n"
+
+
+"# INDIVIDUAL DATA FIELDS, IN ORDER OF APPEARANCE:\n"
+
+"IFIELD INDEX,\"1\",\"%d\"           # INDEX\n"
+"IFIELD CONSTANT,\"T\",\"%s\"        # RCR\n"
+"IFIELD GMT_TIME,\"\",\"%Y/%m/%d\"   # DATE\n"
+"IFIELD HMSG_TIME,\"\",\"%H:%M:%S\"  # TIME\n"
+"IFIELD GPS_FIX,\"SPS\",\"%s\"       # VALID         #  No fix, SPS, DGPS, PPS\n"
+"IFIELD LAT_DECIMAL,\"\",\"%f\"      # LATITUDE\n"
+"IFIELD LAT_DIR,\"\",\"%s\"          # N/S\n"
+"IFIELD LON_DECIMAL,\"\",\"%f\"      # LONGITUDE\n"
+"IFIELD LON_DIR,\"\",\"%s\"          # E/W\n"
+"IFIELD ALT_METERS,\"\",\"%.0f\"     # HEIGHT\n"
+"PATH_SPEED_KPH,\"\",\"%.1f\"        # SPEED\n"
+"PATH_DISTANCE_KM,\"\",\"%f\"        # DISTANCE\n"
+
 ;
 static char kompass_tk[] = 
 "# gpsbabel XCSV style file\n"
@@ -1104,8 +1141,8 @@ static char xmapwpt[] =
 "IFIELD        IGNORE, \"\", \"%-.31s\"\n"
 "IFIELD        DESCRIPTION, \"\", \"%-.78s\"\n"
 ;
-style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } ,  {0,0}};
-size_t nstyles = 30;
+style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "iblue747", iblue747 } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } ,  {0,0}};
+size_t nstyles = 31;
 #else /* CSVFMTS_ENABLED */
 style_vecs_t style_list[] = {{0,0}};
 size_t nstyles = 0;
index 0a5c225aa2f5f579ac9be5836f4169b7ff5d1865..e2caae326951057a2158c2a86a556293c8151cf4 100644 (file)
@@ -20,8 +20,8 @@ EPILOGUE -----Related Tasks-----
 IFIELD SHORTNAME,"", ""%s""
 IFIELD SHORTNAME,"", "%s"
 IFIELD CONSTANT,"", ""
-IFIELD LAT_NMEA, "%f", "%08.3f", "absolute"
-IFIELD LON_NMEA, "%f", "%09.3f", "absolute"
+IFIELD LAT_DDMMDIR, "%f", "%08.3f", "absolute"
+IFIELD LON_DDMMDIR, "%f", "%09.3f", "absolute"
 IFIELD ALT_METERS,"", "%dm"
 IFIELD CONSTANT,"", "1"
 IFIELD CONSTANT,"", ""
index 728fdc83758a0aa2d2462b7dae4413627ca0b686..432e4253b92ca036f99b54d8a9cc6a1123172e6c 100644 (file)
@@ -1,6 +1,6 @@
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.1 */
 /* Command-line: gperf -L ANSI-C -D -t xcsv_tokens.in  */
-/* Computed positions: -k'2,4-5,12' */
+/* Computed positions: -k'2,4-5,12,$' */
 
 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
 #line 1 "xcsv_tokens.in"
 struct xt_mapping {char *name; int xt_token; };
 
-#define TOTAL_KEYWORDS 69
+#define TOTAL_KEYWORDS 71
 #define MIN_WORD_LENGTH 3
 #define MAX_WORD_LENGTH 21
 #define MIN_HASH_VALUE 7
-#define MAX_HASH_VALUE 148
-/* maximum key range = 142, duplicates = 0 */
+#define MAX_HASH_VALUE 154
+/* maximum key range = 148, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -51,32 +51,32 @@ hash (register const char *str, register unsigned int len)
 {
   static unsigned char asso_values[] =
     {
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149,   0, 149,   0,  10,   5,
-       55,  40,  20,   0, 149,  60,  30,  40,   0,  20,
-       70, 149,  50,  45,  30, 149,  30, 149,  40,  10,
-      149, 149, 149, 149, 149,   0, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
-      149, 149, 149, 149, 149, 149
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155,   0, 155,   0,   0,  10,
+       60,   0,  50,  30, 155,  15,  40,  40,   0,  25,
+       30, 155,   0,  20,  15, 155,  40, 155,  25,   0,
+      155, 155, 155, 155, 155,   0, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+      155, 155, 155, 155, 155, 155
     };
   register int hval = len;
 
@@ -102,7 +102,7 @@ hash (register const char *str, register unsigned int len)
         hval += asso_values[(unsigned char)str[1]];
         break;
     }
-  return hval;
+  return hval + asso_values[(unsigned char)str[len - 1]];
 }
 
 #ifdef __GNUC__
@@ -113,159 +113,164 @@ in_word_set (register const char *str, register unsigned int len)
 {
   static struct xt_mapping wordlist[] =
     {
-#line 5 "xcsv_tokens.in"
-      {"ANYNAME", XT_ANYNAME},
-#line 43 "xcsv_tokens.in"
+#line 39 "xcsv_tokens.in"
+      {"LAT_DIR", XT_LAT_DIR},
+#line 44 "xcsv_tokens.in"
       {"LAT_NMEA", XT_LAT_NMEA},
 #line 31 "xcsv_tokens.in"
       {"ICON_DESCR", XT_ICON_DESCR},
-#line 6 "xcsv_tokens.in"
-      {"CADENCE", XT_CADENCE},
-#line 7 "xcsv_tokens.in"
-      {"CITY", XT_CITY},
-#line 52 "xcsv_tokens.in"
+#line 43 "xcsv_tokens.in"
+      {"LAT_DDMMDIR", XT_LAT_DDMMDIR},
+#line 36 "xcsv_tokens.in"
+      {"LAT_DECIMALDIR", XT_LAT_DECIMALDIR},
+#line 5 "xcsv_tokens.in"
+      {"ANYNAME", XT_ANYNAME},
+#line 54 "xcsv_tokens.in"
       {"MAP_EN_BNG", XT_MAP_EN_BNG},
-#line 39 "xcsv_tokens.in"
-      {"LAT_DIR", XT_LAT_DIR},
-#line 15 "xcsv_tokens.in"
-      {"GEOCACHE_HINT", XT_GEOCACHE_HINT},
+#line 10 "xcsv_tokens.in"
+      {"DESCRIPTION", XT_DESCRIPTION},
+#line 20 "xcsv_tokens.in"
+      {"GEOCACHE_TERR", XT_GEOCACHE_TERR},
 #line 19 "xcsv_tokens.in"
       {"GEOCACHE_PLACER", XT_GEOCACHE_PLACER},
-#line 37 "xcsv_tokens.in"
-      {"LAT_DECIMAL", XT_LAT_DECIMAL},
+#line 6 "xcsv_tokens.in"
+      {"CADENCE", XT_CADENCE},
 #line 13 "xcsv_tokens.in"
       {"GEOCACHE_CONTAINER", XT_GEOCACHE_CONTAINER},
 #line 16 "xcsv_tokens.in"
       {"GEOCACHE_ISARCHIVED", XT_GEOCACHE_ISARCHIVED},
-#line 17 "xcsv_tokens.in"
-      {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE},
-#line 51 "xcsv_tokens.in"
-      {"LON_NMEA", XT_LON_NMEA},
-#line 60 "xcsv_tokens.in"
-      {"PATH_SPEED", XT_PATH_SPEED},
-#line 54 "xcsv_tokens.in"
-      {"PATH_COURSE", XT_PATH_COURSE},
-#line 61 "xcsv_tokens.in"
-      {"PHONE_NR", XT_PHONE_NR},
-#line 36 "xcsv_tokens.in"
-      {"LAT_DECIMALDIR", XT_LAT_DECIMALDIR},
-#line 55 "xcsv_tokens.in"
-      {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM},
-#line 48 "xcsv_tokens.in"
+#line 49 "xcsv_tokens.in"
       {"LON_DIR", XT_LON_DIR},
-#line 12 "xcsv_tokens.in"
-      {"FACILITY", XT_FACILITY},
-#line 56 "xcsv_tokens.in"
-      {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES},
+#line 53 "xcsv_tokens.in"
+      {"LON_NMEA", XT_LON_NMEA},
+#line 7 "xcsv_tokens.in"
+      {"CITY", XT_CITY},
+#line 70 "xcsv_tokens.in"
+      {"TRACK_NAME", XT_TRACK_NAME},
+#line 52 "xcsv_tokens.in"
+      {"LON_DDMMDIR", XT_LON_DDMMDIR},
+#line 15 "xcsv_tokens.in"
+      {"GEOCACHE_HINT", XT_GEOCACHE_HINT},
 #line 46 "xcsv_tokens.in"
-      {"LON_DECIMAL", XT_LON_DECIMAL},
-#line 40 "xcsv_tokens.in"
-      {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE},
-#line 67 "xcsv_tokens.in"
-      {"TIMET_TIME", XT_TIMET_TIME},
-#line 33 "xcsv_tokens.in"
-      {"INDEX", XT_INDEX},
-#line 66 "xcsv_tokens.in"
-      {"STREET_ADDR", XT_STREET_ADDR},
+      {"LON_DECIMALDIR", XT_LON_DECIMALDIR},
+#line 17 "xcsv_tokens.in"
+      {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE},
+#line 32 "xcsv_tokens.in"
+      {"IGNORE", XT_IGNORE},
 #line 41 "xcsv_tokens.in"
       {"LAT_INT32DEG", XT_LAT_INT32DEG},
-#line 70 "xcsv_tokens.in"
+#line 72 "xcsv_tokens.in"
       {"URL", XT_URL},
-#line 45 "xcsv_tokens.in"
-      {"LON_DECIMALDIR", XT_LON_DECIMALDIR},
+#line 28 "xcsv_tokens.in"
+      {"HEART_RATE", XT_HEART_RATE},
+#line 68 "xcsv_tokens.in"
+      {"STREET_ADDR", XT_STREET_ADDR},
 #line 9 "xcsv_tokens.in"
       {"COUNTRY", XT_COUNTRY},
-#line 44 "xcsv_tokens.in"
-      {"LOCAL_TIME", XT_LOCAL_TIME},
-#line 62 "xcsv_tokens.in"
-      {"POSTAL_CODE", XT_POSTAL_CODE},
-#line 49 "xcsv_tokens.in"
-      {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE},
-#line 38 "xcsv_tokens.in"
-      {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL},
-#line 63 "xcsv_tokens.in"
-      {"ROUTE_NAME", XT_ROUTE_NAME},
-#line 10 "xcsv_tokens.in"
-      {"DESCRIPTION", XT_DESCRIPTION},
-#line 20 "xcsv_tokens.in"
-      {"GEOCACHE_TERR", XT_GEOCACHE_TERR},
 #line 18 "xcsv_tokens.in"
       {"GEOCACHE_LAST_FOUND", XT_GEOCACHE_LAST_FOUND},
-#line 65 "xcsv_tokens.in"
+#line 37 "xcsv_tokens.in"
+      {"LAT_DECIMAL", XT_LAT_DECIMAL},
+#line 35 "xcsv_tokens.in"
+      {"ISO_TIME", XT_ISO_TIME},
+#line 67 "xcsv_tokens.in"
       {"STATE", XT_STATE},
-#line 42 "xcsv_tokens.in"
-      {"LATLON_HUMAN_READABLE", XT_LATLON_HUMAN_READABLE},
-#line 50 "xcsv_tokens.in"
+#line 29 "xcsv_tokens.in"
+      {"HMSG_TIME", XT_HMSG_TIME},
+#line 62 "xcsv_tokens.in"
+      {"PATH_SPEED", XT_PATH_SPEED},
+#line 64 "xcsv_tokens.in"
+      {"POSTAL_CODE", XT_POSTAL_CODE},
+#line 21 "xcsv_tokens.in"
+      {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE},
+#line 33 "xcsv_tokens.in"
+      {"INDEX", XT_INDEX},
+#line 34 "xcsv_tokens.in"
+      {"ISO_TIME_MS", XT_ISO_TIME_MS},
+#line 51 "xcsv_tokens.in"
       {"LON_INT32DEG", XT_LON_INT32DEG},
-#line 14 "xcsv_tokens.in"
-      {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF},
-#line 59 "xcsv_tokens.in"
-      {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH},
-#line 53 "xcsv_tokens.in"
-      {"NOTES", XT_NOTES},
+#line 63 "xcsv_tokens.in"
+      {"PHONE_NR", XT_PHONE_NR},
+#line 65 "xcsv_tokens.in"
+      {"ROUTE_NAME", XT_ROUTE_NAME},
+#line 56 "xcsv_tokens.in"
+      {"PATH_COURSE", XT_PATH_COURSE},
+#line 26 "xcsv_tokens.in"
+      {"GPS_SAT", XT_GPS_SAT},
 #line 22 "xcsv_tokens.in"
       {"GMT_TIME", XT_GMT_TIME},
-#line 30 "xcsv_tokens.in"
-      {"HMSL_TIME", XT_HMSL_TIME},
-#line 4 "xcsv_tokens.in"
-      {"ALT_METERS", XT_ALT_METERS},
-#line 35 "xcsv_tokens.in"
-      {"ISO_TIME", XT_ISO_TIME},
+#line 69 "xcsv_tokens.in"
+      {"TIMET_TIME", XT_TIMET_TIME},
 #line 47 "xcsv_tokens.in"
-      {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL},
-#line 11 "xcsv_tokens.in"
-      {"EXCEL_TIME", XT_EXCEL_TIME},
-#line 34 "xcsv_tokens.in"
-      {"ISO_TIME_MS", XT_ISO_TIME_MS},
-#line 21 "xcsv_tokens.in"
-      {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE},
-#line 29 "xcsv_tokens.in"
-      {"HMSG_TIME", XT_HMSG_TIME},
-#line 3 "xcsv_tokens.in"
-      {"ALT_FEET", XT_ALT_FEET},
-#line 58 "xcsv_tokens.in"
-      {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH},
-#line 28 "xcsv_tokens.in"
-      {"HEART_RATE", XT_HEART_RATE},
-#line 57 "xcsv_tokens.in"
-      {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS},
-#line 24 "xcsv_tokens.in"
-      {"GPS_HDOP", XT_GPS_HDOP},
+      {"LON_DECIMAL", XT_LON_DECIMAL},
+#line 12 "xcsv_tokens.in"
+      {"FACILITY", XT_FACILITY},
+#line 55 "xcsv_tokens.in"
+      {"NOTES", XT_NOTES},
 #line 8 "xcsv_tokens.in"
       {"CONSTANT", XT_CONSTANT},
-#line 27 "xcsv_tokens.in"
-      {"GPS_VDOP", XT_GPS_VDOP},
-#line 64 "xcsv_tokens.in"
+#line 66 "xcsv_tokens.in"
       {"SHORTNAME", XT_SHORTNAME},
+#line 45 "xcsv_tokens.in"
+      {"LOCAL_TIME", XT_LOCAL_TIME},
+#line 40 "xcsv_tokens.in"
+      {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE},
+#line 58 "xcsv_tokens.in"
+      {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES},
 #line 71 "xcsv_tokens.in"
+      {"URL_LINK_TEXT", XT_URL_LINK_TEXT},
+#line 38 "xcsv_tokens.in"
+      {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL},
+#line 11 "xcsv_tokens.in"
+      {"EXCEL_TIME", XT_EXCEL_TIME},
+#line 42 "xcsv_tokens.in"
+      {"LATLON_HUMAN_READABLE", XT_LATLON_HUMAN_READABLE},
+#line 25 "xcsv_tokens.in"
+      {"GPS_PDOP", XT_GPS_PDOP},
+#line 30 "xcsv_tokens.in"
+      {"HMSL_TIME", XT_HMSL_TIME},
+#line 59 "xcsv_tokens.in"
+      {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS},
+#line 73 "xcsv_tokens.in"
       {"YYYYMMDD_TIME", XT_YYYYMMDD_TIME},
-#line 32 "xcsv_tokens.in"
-      {"IGNORE", XT_IGNORE},
-#line 68 "xcsv_tokens.in"
-      {"TRACK_NAME", XT_TRACK_NAME},
-#line 26 "xcsv_tokens.in"
-      {"GPS_SAT", XT_GPS_SAT},
+#line 57 "xcsv_tokens.in"
+      {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM},
+#line 27 "xcsv_tokens.in"
+      {"GPS_VDOP", XT_GPS_VDOP},
+#line 4 "xcsv_tokens.in"
+      {"ALT_METERS", XT_ALT_METERS},
+#line 50 "xcsv_tokens.in"
+      {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE},
+#line 24 "xcsv_tokens.in"
+      {"GPS_HDOP", XT_GPS_HDOP},
+#line 48 "xcsv_tokens.in"
+      {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL},
 #line 23 "xcsv_tokens.in"
       {"GPS_FIX", XT_GPS_FIX},
-#line 69 "xcsv_tokens.in"
-      {"URL_LINK_TEXT", XT_URL_LINK_TEXT},
-#line 25 "xcsv_tokens.in"
-      {"GPS_PDOP", XT_GPS_PDOP}
+#line 3 "xcsv_tokens.in"
+      {"ALT_FEET", XT_ALT_FEET},
+#line 60 "xcsv_tokens.in"
+      {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH},
+#line 14 "xcsv_tokens.in"
+      {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF},
+#line 61 "xcsv_tokens.in"
+      {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH}
     };
 
   static signed char lookup[] =
     {
-      -1, -1, -1, -1, -1, -1, -1,  0,  1, -1,  2, -1,  3, -1,
-       4,  5, -1,  6,  7, -1,  8,  9, -1, 10, 11, 12, -1, -1,
-      13, -1, 14, 15, -1, 16, 17, -1, 18, 19, 20, 21, -1, 22,
-      -1, 23, -1, 24, -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
-      -1, 30, -1, -1, 31, 32, -1, 33, 34, 35, 36, -1, 37, 38,
-      39, 40, 41, 42, 43, 44, -1, -1, 45, 46, 47, -1, -1, 48,
-      49, 50, 51, -1, 52, 53, -1, -1, -1, 54, 55, 56, 57, -1,
-      58, -1, -1, -1, -1, 59, -1, -1, -1, -1, 60, 61, -1, -1,
-      -1, 62, -1, -1, 63, -1, -1, -1, 64, -1, 65, -1, -1, -1,
-      -1, -1, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1,
-      -1, -1, -1, -1, -1, -1, -1, -1, 68
+      -1, -1, -1, -1, -1, -1, -1,  0,  1, -1,  2,  3, -1, -1,
+       4, -1, -1,  5, -1, -1,  6,  7, -1,  8, -1,  9, -1, 10,
+      11, 12, -1, -1, 13, 14, 15, 16, 17, -1, 18, 19, 20, 21,
+      22, 23, -1, 24, 25, 26, -1, 27, -1, 28, -1, 29, -1, 30,
+      -1, -1, -1, 31, 32, 33, -1, 34, -1, 35, 36, 37, 38, -1,
+      39, 40, 41, 42, -1, 43, 44, -1, 45, -1, 46, -1, -1, 47,
+      48, 49, -1, -1, 50, 51, -1, -1, -1, 52, 53, 54, 55, -1,
+      56, 57, -1, 58, -1, 59, -1, -1, 60, -1, 61, -1, 62, -1,
+      -1, 63, -1, -1, -1, -1, 64, 65, -1, -1, 66, 67, -1, -1,
+      -1, -1, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+      -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+      70
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
index 460ed0003cf674a972f32a8211f0876af305793d..b71e8f0aa6c376a1a6a55a2050d132085a87c2c1 100644 (file)
@@ -40,6 +40,7 @@ LAT_DIR, XT_LAT_DIR
 LAT_HUMAN_READABLE, XT_LAT_HUMAN_READABLE
 LAT_INT32DEG, XT_LAT_INT32DEG
 LATLON_HUMAN_READABLE, XT_LATLON_HUMAN_READABLE
+LAT_DDMMDIR, XT_LAT_DDMMDIR
 LAT_NMEA, XT_LAT_NMEA
 LOCAL_TIME, XT_LOCAL_TIME
 LON_DECIMALDIR, XT_LON_DECIMALDIR
@@ -48,6 +49,7 @@ LON_DIRDECIMAL, XT_LON_DIRDECIMAL
 LON_DIR, XT_LON_DIR
 LON_HUMAN_READABLE, XT_LON_HUMAN_READABLE
 LON_INT32DEG, XT_LON_INT32DEG
+LON_DDMMDIR, XT_LON_DDMMDIR
 LON_NMEA, XT_LON_NMEA
 MAP_EN_BNG, XT_MAP_EN_BNG
 NOTES, XT_NOTES
index 4223913a2b6e3e6356a7027ead8d3f2cd4811dd3..21df6b18e57b8d7a97e6ece620a6d2c0112f5da2 100644 (file)
@@ -701,6 +701,22 @@ example:
 </screen>
 </section>
 
+<section id="style_def_latddmmdir">
+<title>LAT_DDMMDIR</title>
+<para>
+Derived from the LAT_NMEA latitude format, with degrees * 100 plus decimal 
+minutes, but using a trailing 'N' or 'S' instead of a leading minus sign (or 
+absence thereof) to give direction from zero.
+</para>
+<para>
+<screen format="linespecific"> IFIELD LAT_DDMMDIR, "%f", "%08.3f%c" # (writes "5334.192S" giving -53.56987 degrees latitude)
+</screen>
+</para>
+</section>
+
+
+
+
 <section id="style_def_lonnmea">
 <title>LON_NMEA</title>
 <para>
@@ -708,12 +724,28 @@ example:
    degrees multiplied by 100 plus decimal minutes.
 </para>
 <para>
-example:
+Example:
 </para>
 <screen format="linespecific">   IFIELD  LON_NMEA, "%f", "%010.3f"  # (writes -08708.082)
 </screen>
 </section>
 
+<section id="style_def_londdmmdir">
+<title>LON_DDMMDIR</title>
+<para>
+Derived from the LON_NMEA longitude format, with degrees * 100 plus decimal minutes, but using a
+trailing 'E' or 'W' instead of a leading minus sign (or absence thereof) to give direction from
+zero.
+</para>
+<para>
+Example:
+</para>
+<screen format="linespecific"> IFIELD LON_DDMMDIR, "%f", "%010.3f%c" # (writes "01232.745W" giving -12.54575 degrees
+longitude)
+</screen>
+</section>
+
+
 <section id="style_def_latlon_10ex">
 <title>LAT_10EX / LON_10EX</title>
 <para>